/**
 * 处理最常用的HTML特殊字符实体 - 编码
 * @param {string} str - 需要编码的字符串
 * @returns {string} 编码后的字符串
 */
export const htmlEncode = (str) => {
  // 非字符串直接返回，避免报错
  if (typeof str !== 'string') return str;
  
  // 一次性替换所有特殊字符，减少函数调用
  return str.replace(/[&<>"' ]/g, match => ({
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#39;',
    ' ': '&nbsp;'
  }[match]));
};

/**
 * 处理最常用的HTML特殊字符实体 - 解码
 * @param {string} str - 需要解码的字符串
 * @returns {string} 解码后的字符串
 */
export const htmlDecode = (str) => {
  // 非字符串直接返回，避免报错
  if (typeof str !== 'string') return str;
  
  // 一次性替换所有常见实体，减少函数调用
  return str.replace(/&amp;|&lt;|&gt;|&nbsp;|&#39;|&quot;/g, match => ({
    '&amp;': '&',
    '&lt;': '<',
    '&gt;': '>',
    '&nbsp;': ' ',
    '&#39;': "'",
    '&quot;': '"'
  }[match]));
};